﻿
namespace RealidadeAumentada.Entidades
{
    public class EMatrizDupla22 : IMatrizDupla
    {
        public double m00;
        public double m01;
        public double m10;
        public double m11;

        #region Setar Valor
        public void SetarValor(double[] i_value)
        {
            this.m00 = i_value[0];
            this.m01 = i_value[1];
            this.m10 = i_value[3];
            this.m11 = i_value[4];
            return;
        }
        #endregion

        #region Obter Valor
        public void ObterValor(double[] o_value)
        {
            o_value[0] = this.m00;
            o_value[1] = this.m01;
            o_value[3] = this.m10;
            o_value[4] = this.m11;
            return;
        }
        #endregion

        public bool Inverso(EMatrizDupla22 i_src)
        {
            double a11, a12, a21, a22;
            a11 = i_src.m00;
            a12 = i_src.m01;
            a21 = i_src.m10;
            a22 = i_src.m11;
            double det = a11 * a22 - a12 * a21;
            if (det == 0)
            {
                return false;
            }
            det = 1 / det;
            this.m00 = a22 * det;
            this.m01 = -a12 * det;
            this.m10 = -a21 * det;
            this.m11 = a11 * det;
            return true;
        }
    }
}
